package model.objetos;

import ar.uba.fi.algo3.titiritero.Posicionable;
import model.Laberinto;
import model.common.Constantes;
import model.posicion.Posicion;


public abstract class Objetos implements Posicionable{
	
	private Posicion posicion;//posicion del objeto dentro del tablero
	private int puntos;//Puntos que le entrega al PacMan
	private boolean comible;//Indica cuando el objeto fue comido por el PacMan
	private Laberinto elLaberinto;

/*******************************************************************************
* Constructor de Objetos
*******************************************************************************/	
	public Objetos(Posicion posicion, int puntos, Laberinto elLaberinto){
		
		this.posicion=posicion;
		this.puntos = puntos;
		this.comible = true;
		this.elLaberinto= elLaberinto;
	}
	
/*******************************************************************************
* Retorna los puntos
*******************************************************************************/	
	public int getPuntos(){	
		return this.puntos;
	}

/*******************************************************************************
* Cambia el estado del Objeto
*******************************************************************************/	
	public void cambiarEstado(boolean valor){		
		this.comible = valor;
	}
	
/*******************************************************************************
* Retorna el estado del Objeto, (comible=true; No comible=false)
*******************************************************************************/		
	public boolean estaComible(){
		return this.comible;
	}

/*******************************************************************************
* Si el objeto es comible le cambia el estado, y segun que tipo de objeto sea
* asigna puntos o no
*******************************************************************************/		
 	
	public abstract  void comer(Posicion posicion);
	
/*******************************************************************************
* Retorna TRUE porque los objetos son accesibles
******************************************************************************/	
	
	public abstract boolean accesible();
	

/******************************************************************************
* Retorna el laberinto
******************************************************************************/	
	public Laberinto getElLaberinto() {
		return elLaberinto;
	}
	
	public Posicion getPosicion() {
		return posicion;
	}

	public int getX() {
		return this.posicion.getPosX() * (Constantes.ANCHO)+(Constantes.ANCHO%2);
	}

	public int getY() {
		return this.posicion.getPosY() * (Constantes.ALTO)+(Constantes.ALTO%2);
	}
	
	
}

